/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ManagerProyect;


import java.io.*;
import java.util.LinkedList;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.tree.*;
import practicadwh.Principal;

/**
 *
 * @author sergio
 */
public class crearProyecto {

    public String dirProyecto;
    public String dirBackup;
  
    
    public LinkedList padres=new LinkedList();
    Metodos metodos=new Metodos();

public void crearProyecto(String nameProyecto,String pathProyecto,String pathBackup)
{
    this.dirProyecto=pathProyecto;
    this.dirBackup=pathBackup;
    crearDirectorios(nameProyecto);
    añadirProyectoArbol(nameProyecto);
    crearXml(nameProyecto);
  
}
public void abrirProyectoSinClases(String name)
{
        DefaultMutableTreeNode hijoraiz;
         hijoraiz = new DefaultMutableTreeNode(name);
        ventana.modelo.insertNodeInto(hijoraiz, ventana.raiz, 0);

        DefaultMutableTreeNode java = new DefaultMutableTreeNode("Java");
        DefaultMutableTreeNode img = new DefaultMutableTreeNode("Imagenes");
        ventana.modelo.insertNodeInto(java, hijoraiz, 0);
        ventana.modelo.insertNodeInto(img, hijoraiz, 0);

padres.add(hijoraiz);


}
public void cerrarProyecto(String name)
{
       
    for(int i=0;i<padres.size();i++)
    {

        DefaultMutableTreeNode hijoraiz=(DefaultMutableTreeNode)padres.get(i);
        if(hijoraiz.toString().equals(name))
        {
            //ventana.modelo.insertNodeInto(hijoraiz, ventana.raiz, 0);

            hijoraiz.removeAllChildren();
           /* while(hijoraiz.getChildCount()>0)
            {
            ventana.modelo.removeNodeFromParent(hijoraiz.getNextNode());
            }*/
            ventana.modelo.removeNodeFromParent(hijoraiz);
            
            padres.remove(i);
            metodos.eliminarProyecto();
           
        //System.out.println(hijoraiz.toString());
        }
    }


}
public void añadirProyectoArbol(String name)
{
        /*
        DefaultMutableTreeNode hijoraiz;
        hijoraiz = new DefaultMutableTreeNode(name);
        Principal.modelo.insertNodeInto(hijoraiz, Principal.raizArbol, 0);

        DefaultMutableTreeNode java = new DefaultMutableTreeNode("Tablas");
        //DefaultMutableTreeNode img = new DefaultMutableTreeNode("Imagenes");
        Principal.modelo.insertNodeInto(java, hijoraiz, 0);
        //ventana.modelo.insertNodeInto(img, hijoraiz, 0);
        //final DefaultMutableTreeNode hija3 = new DefaultMutableTreeNode("main.java");
        final DefaultMutableTreeNode hija = new DefaultMutableTreeNode("Main.java");
        //final DefaultMutableTreeNode hija2 = new DefaultMutableTreeNode("metodos.java");
        Principal.modelo.insertNodeInto(hija,java, 0);
        //ventana.modelo.insertNodeInto(hija2,java, 1);
        //ventana.modelo.insertNodeInto(hija3,img, 0);
padres.add(hijoraiz);*/


}

public void añadirClasesArbol(String nameAplication, String nameClase)
{
   for(int i=0;i<padres.size();i++)
   {

       DefaultMutableTreeNode hijoraiz=(DefaultMutableTreeNode)padres.get(i);
       if(hijoraiz.toString().equals(nameAplication))
       {//hijoraiz.getFirstLeaf().toString();
           DefaultMutableTreeNode names=(DefaultMutableTreeNode)ventana.modelo.getChild(hijoraiz,1);
           int hijos=ventana.modelo.getChildCount(names);
           System.out.println(hijos);
           names.toString();


            System.out.println(hijoraiz.toString());
          System.out.println(names.toString());
          final DefaultMutableTreeNode hija = new DefaultMutableTreeNode(nameClase+".java");
      ventana.modelo.insertNodeInto(hija,names, hijos);
       }
   }//ventana.modelo.getChild(, index)
}
public void crearXml(String name)
{
        try {

  

            FileWriter fw = null;
            fw = new FileWriter(dirProyecto+name+"/" + name + ".txt");
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter salida = new PrintWriter(bw);
            salida.println("<Proyecto>");
           

            salida.println("<Nombre>" + name + "</Nombre>");
          

            salida.println("<DireccionProyecto>");
           
            salida.println(dirProyecto+name);
           
            salida.println("</DireccionProyecto>");
            salida.println("<DireccionBackup>");
           
            salida.println(dirBackup);
           
            salida.println("</DireccionBackup>");
           
            salida.println("<Tabla>");
            
            salida.println("</Tabla>");
           
           
         
            salida.println("</Proyecto>");
           
            salida.close();
        


        } catch (IOException ex) {
            Logger.getLogger(crearProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }
}
public void añadirClaseAXml(String pathProyect,String nameProyect,String pathClass)
{
        try {
            try {
                FileReader entrada = new FileReader(pathProyect+"\\"+nameProyect + ".txt");
                BufferedReader asd = new BufferedReader(entrada);

                FileWriter fws = null;
                fws= new FileWriter(pathProyect + "\\"+nameProyect + "2.txt");
                BufferedWriter bws = new BufferedWriter(fws);
                PrintWriter salida1 = new PrintWriter(bws);

               
                String linea = "";
                while ((linea = asd.readLine()) != null) {
                
                    salida1.println(linea);
                    
                    StringTokenizer elementos;
                    elementos = new StringTokenizer(linea, "<>");
                    if (elementos.nextToken().equals("Java")) {

                        salida1.println("<Direccion>");
                        salida1.println(pathClass);
                        salida1.println("</Direccion>");
                                            }
                }
                asd.close();
                salida1.close();
            } catch (IOException e) {
                System.out.println("No fue posible abrir el archivo");
            }




                FileReader entrada = new FileReader(pathProyect +  "\\" + nameProyect+"2.txt");
                BufferedReader asd = new BufferedReader(entrada);

            FileWriter fws = null;
            fws= new FileWriter(pathProyect + "\\" + nameProyect+ ".txt");
            BufferedWriter bws = new BufferedWriter(fws);
            PrintWriter salida1 = new PrintWriter(bws);


                String linea = "";
                while ((linea = asd.readLine()) != null) {
                   
                    salida1.println(linea);

                }
                asd.close();
                salida1.close();

            
        } catch (IOException ex) {
            Logger.getLogger(crearProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }

}
public void copiarArchivoAProyecto(String pathReader,String pathWriter)
{

            try {
                FileReader entrada = new FileReader(pathReader);
                BufferedReader asd = new BufferedReader(entrada);

                FileWriter fws = null;
                fws= new FileWriter(pathWriter);
                BufferedWriter bws = new BufferedWriter(fws);
                PrintWriter salida1 = new PrintWriter(bws);


                String linea = "";
                while ((linea = asd.readLine()) != null) {

                  /*  StringTokenizer elementos;
                    elementos = new StringTokenizer(linea, " \t");
                    if(elementos.nextToken().equals("package"))
                    {
                        salida1.println("package  src");

                    }
                    else*/
                    salida1.println(linea);
                    

                }
                asd.close();
                salida1.close();
            } catch (IOException e) {
                System.out.println("No fue posible abrir el archivo");
            }





}
public void crearNuevoArchivo(String path,String name)
{
        try {
            FileWriter fw = null;
            fw = new FileWriter(path);
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter salida = new PrintWriter(bw);
            salida.println("package  src;");
            salida.println();
            salida.println();
            salida.println("public class "+name+" {");
            salida.println();
            salida.println();
            salida.println();
            salida.println("public  "+name+"() {");
            salida.println();
            salida.println();
            salida.println("}");
            salida.println("}");
            salida.close();
        } catch (IOException ex) {
            Logger.getLogger(crearProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }
}

public void crearDirectorios(String name)
{
    String curDir = System.getProperty("user.name");
       java.io.File  dir = new File("/home/"+curDir+"/"+name);
        dir.mkdir();
      
}

}
